package mx.gob.imss.reiman.clientes.model;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

/**
 * 
 * @author Alberto Dzul Calvillo
 * @version 1.0
 * 
 */
public class EntradaAlmacen implements Serializable {
	private static final long serialVersionUID = 1L;
	private String existencia;
	private String idee;
	private String fechaAtencion;
	private String folioUnidad;
	private String stpExtraccionComponente;
	private String observacionesEntrada;
	private String matricula;
	private String apellidoPaterno;
	private String apellidoMaterno;
	private String nombre;
	private String cvePresupuestal;
	private String stpTransaccion;
	private String tipoMensaje;
	private String tipoServicio;
	private String rfc;
	private String aplicacion;
	private String contrato;
	private String texto;
	private boolean reingreso;
	private List<Componente> componentes = new ArrayList<Componente>();

	public EntradaAlmacen() {
		super();
		this.existencia = "";
		this.idee = "";
		this.fechaAtencion = "";
		this.folioUnidad = "";
		this.stpExtraccionComponente = "";
		this.observacionesEntrada = "";
		this.matricula = "";
		this.apellidoPaterno = "";
		this.apellidoMaterno = "";
		this.nombre = "";
		this.cvePresupuestal = "";
		this.stpTransaccion = "";
		this.tipoMensaje = "";
		this.tipoServicio = "";
		this.rfc = "";
		this.aplicacion = "";
		this.contrato = "";
		this.texto = "";
		this.reingreso = false;
		this.componentes = new ArrayList<Componente>();
	}

	public EntradaAlmacen(String existencia, String idee, String fechaAtencion,
			String folioUnidad, String stpExtraccionComponente,
			String observacionesEntrada, String matricula,
			String apellidoPaterno, String apellidoMaterno, String nombre,
			String cvePresupuestal, String stpTransaccion, String tipoMensaje,
			String tipoServicio, String rfc, String aplicacion,
			String contrato, String texto, boolean reingreso,
			List<Componente> componentes) {
		super();
		this.existencia = existencia;
		this.idee = idee;
		this.fechaAtencion = fechaAtencion;
		this.folioUnidad = folioUnidad;
		this.stpExtraccionComponente = stpExtraccionComponente;
		this.observacionesEntrada = observacionesEntrada;
		this.matricula = matricula;
		this.apellidoPaterno = apellidoPaterno;
		this.apellidoMaterno = apellidoMaterno;
		this.nombre = nombre;
		this.cvePresupuestal = cvePresupuestal;
		this.stpTransaccion = stpTransaccion;
		this.tipoMensaje = tipoMensaje;
		this.tipoServicio = tipoServicio;
		this.rfc = rfc;
		this.aplicacion = aplicacion;
		this.contrato = contrato;
		this.texto = texto;
		this.reingreso = reingreso;
		this.componentes = componentes;
	}

	public String getExistencia() {
		return existencia;
	}

	public void setExistencia(String existencia) {
		this.existencia = existencia;
	}

	public String getIdee() {
		return idee;
	}

	public void setIdee(String idee) {
		this.idee = idee;
	}

	public String getFechaAtencion() {
		return fechaAtencion;
	}

	public void setFechaAtencion(String fechaAtencion) {
		this.fechaAtencion = fechaAtencion;
	}

	public String getFolioUnidad() {
		return folioUnidad;
	}

	public void setFolioUnidad(String folioUnidad) {
		this.folioUnidad = folioUnidad;
	}

	public String getStpExtraccionComponente() {
		return stpExtraccionComponente;
	}

	public void setStpExtraccionComponente(String stpExtraccionComponente) {
		this.stpExtraccionComponente = stpExtraccionComponente;
	}

	public String getObservacionesEntrada() {
		return observacionesEntrada;
	}

	public void setObservacionesEntrada(String observacionesEntrada) {
		this.observacionesEntrada = observacionesEntrada;
	}

	public String getMatricula() {
		return matricula;
	}

	public void setMatricula(String matricula) {
		this.matricula = matricula;
	}

	public String getApellidoPaterno() {
		return apellidoPaterno;
	}

	public void setApellidoPaterno(String apellidoPaterno) {
		this.apellidoPaterno = apellidoPaterno;
	}

	public String getApellidoMaterno() {
		return apellidoMaterno;
	}

	public void setApellidoMaterno(String apellidoMaterno) {
		this.apellidoMaterno = apellidoMaterno;
	}

	public String getNombre() {
		return nombre;
	}

	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	public String getCvePresupuestal() {
		return cvePresupuestal;
	}

	public void setCvePresupuestal(String cvePresupuestal) {
		this.cvePresupuestal = cvePresupuestal;
	}

	public String getStpTransaccion() {
		return stpTransaccion;
	}

	public void setStpTransaccion(String stpTransaccion) {
		this.stpTransaccion = stpTransaccion;
	}

	public String getTipoMensaje() {
		return tipoMensaje;
	}

	public void setTipoMensaje(String tipoMensaje) {
		this.tipoMensaje = tipoMensaje;
	}

	public String getTipoServicio() {
		return tipoServicio;
	}

	public void setTipoServicio(String tipoServicio) {
		this.tipoServicio = tipoServicio;
	}

	public String getRfc() {
		return rfc;
	}

	public void setRfc(String rfc) {
		this.rfc = rfc;
	}

	public String getAplicacion() {
		return aplicacion;
	}

	public void setAplicacion(String aplicacion) {
		this.aplicacion = aplicacion;
	}

	public String getContrato() {
		return contrato;
	}

	public void setContrato(String contrato) {
		this.contrato = contrato;
	}

	public String getTexto() {
		return texto;
	}

	public void setTexto(String texto) {
		this.texto = texto;
	}

	public boolean isReingreso() {
		return reingreso;
	}

	public void setReingreso(boolean reingreso) {
		this.reingreso = reingreso;
	}

	public List<Componente> getComponentes() {
		return componentes;
	}

	public void setComponentes(List<Componente> componentes) {
		this.componentes = componentes;
	}

	@Override
	public String toString() {
		return "EntradaAlmacen [existencia=" + existencia + ", idee=" + idee
				+ ", fechaAtencion=" + fechaAtencion + ", folioUnidad="
				+ folioUnidad + ", stpExtraccionComponente="
				+ stpExtraccionComponente + ", observacionesEntrada="
				+ observacionesEntrada + ", matricula=" + matricula
				+ ", apellidoPaterno=" + apellidoPaterno + ", apellidoMaterno="
				+ apellidoMaterno + ", nombre=" + nombre + ", cvePresupuestal="
				+ cvePresupuestal + ", stpTransaccion=" + stpTransaccion
				+ ", tipoMensaje=" + tipoMensaje + ", tipoServicio="
				+ tipoServicio + ", rfc=" + rfc + ", aplicacion=" + aplicacion
				+ ", contrato=" + contrato + ", texto=" + texto
				+ ", reingreso=" + reingreso + ", componentes=" + componentes
				+ "]";
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result
				+ ((apellidoMaterno == null) ? 0 : apellidoMaterno.hashCode());
		result = prime * result
				+ ((apellidoPaterno == null) ? 0 : apellidoPaterno.hashCode());
		result = prime * result
				+ ((aplicacion == null) ? 0 : aplicacion.hashCode());
		result = prime * result
				+ ((componentes == null) ? 0 : componentes.hashCode());
		result = prime * result
				+ ((contrato == null) ? 0 : contrato.hashCode());
		result = prime * result
				+ ((cvePresupuestal == null) ? 0 : cvePresupuestal.hashCode());
		result = prime * result
				+ ((existencia == null) ? 0 : existencia.hashCode());
		result = prime * result
				+ ((fechaAtencion == null) ? 0 : fechaAtencion.hashCode());
		result = prime * result
				+ ((folioUnidad == null) ? 0 : folioUnidad.hashCode());
		result = prime * result + ((idee == null) ? 0 : idee.hashCode());
		result = prime * result
				+ ((matricula == null) ? 0 : matricula.hashCode());
		result = prime * result + ((nombre == null) ? 0 : nombre.hashCode());
		result = prime
				* result
				+ ((observacionesEntrada == null) ? 0 : observacionesEntrada
						.hashCode());
		result = prime * result + (reingreso ? 1231 : 1237);
		result = prime * result + ((rfc == null) ? 0 : rfc.hashCode());
		result = prime
				* result
				+ ((stpExtraccionComponente == null) ? 0
						: stpExtraccionComponente.hashCode());
		result = prime * result
				+ ((stpTransaccion == null) ? 0 : stpTransaccion.hashCode());
		result = prime * result + ((texto == null) ? 0 : texto.hashCode());
		result = prime * result
				+ ((tipoMensaje == null) ? 0 : tipoMensaje.hashCode());
		result = prime * result
				+ ((tipoServicio == null) ? 0 : tipoServicio.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj) {
			return true;
		}
		if (obj == null) {
			return false;
		}
		if (!(obj instanceof EntradaAlmacen)) {
			return false;
		}
		EntradaAlmacen other = (EntradaAlmacen) obj;
		if (apellidoMaterno == null) {
			if (other.apellidoMaterno != null) {
				return false;
			}
		} else if (!apellidoMaterno.equals(other.apellidoMaterno)) {
			return false;
		}
		if (apellidoPaterno == null) {
			if (other.apellidoPaterno != null) {
				return false;
			}
		} else if (!apellidoPaterno.equals(other.apellidoPaterno)) {
			return false;
		}
		if (aplicacion == null) {
			if (other.aplicacion != null) {
				return false;
			}
		} else if (!aplicacion.equals(other.aplicacion)) {
			return false;
		}
		if (componentes == null) {
			if (other.componentes != null) {
				return false;
			}
		} else if (!componentes.equals(other.componentes)) {
			return false;
		}
		if (contrato == null) {
			if (other.contrato != null) {
				return false;
			}
		} else if (!contrato.equals(other.contrato)) {
			return false;
		}
		if (cvePresupuestal == null) {
			if (other.cvePresupuestal != null) {
				return false;
			}
		} else if (!cvePresupuestal.equals(other.cvePresupuestal)) {
			return false;
		}
		if (existencia == null) {
			if (other.existencia != null) {
				return false;
			}
		} else if (!existencia.equals(other.existencia)) {
			return false;
		}
		if (fechaAtencion == null) {
			if (other.fechaAtencion != null) {
				return false;
			}
		} else if (!fechaAtencion.equals(other.fechaAtencion)) {
			return false;
		}
		if (folioUnidad == null) {
			if (other.folioUnidad != null) {
				return false;
			}
		} else if (!folioUnidad.equals(other.folioUnidad)) {
			return false;
		}
		if (idee == null) {
			if (other.idee != null) {
				return false;
			}
		} else if (!idee.equals(other.idee)) {
			return false;
		}
		if (matricula == null) {
			if (other.matricula != null) {
				return false;
			}
		} else if (!matricula.equals(other.matricula)) {
			return false;
		}
		if (nombre == null) {
			if (other.nombre != null) {
				return false;
			}
		} else if (!nombre.equals(other.nombre)) {
			return false;
		}
		if (observacionesEntrada == null) {
			if (other.observacionesEntrada != null) {
				return false;
			}
		} else if (!observacionesEntrada.equals(other.observacionesEntrada)) {
			return false;
		}
		if (reingreso != other.reingreso) {
			return false;
		}
		if (rfc == null) {
			if (other.rfc != null) {
				return false;
			}
		} else if (!rfc.equals(other.rfc)) {
			return false;
		}
		if (stpExtraccionComponente == null) {
			if (other.stpExtraccionComponente != null) {
				return false;
			}
		} else if (!stpExtraccionComponente
				.equals(other.stpExtraccionComponente)) {
			return false;
		}
		if (stpTransaccion == null) {
			if (other.stpTransaccion != null) {
				return false;
			}
		} else if (!stpTransaccion.equals(other.stpTransaccion)) {
			return false;
		}
		if (texto == null) {
			if (other.texto != null) {
				return false;
			}
		} else if (!texto.equals(other.texto)) {
			return false;
		}
		if (tipoMensaje == null) {
			if (other.tipoMensaje != null) {
				return false;
			}
		} else if (!tipoMensaje.equals(other.tipoMensaje)) {
			return false;
		}
		if (tipoServicio == null) {
			if (other.tipoServicio != null) {
				return false;
			}
		} else if (!tipoServicio.equals(other.tipoServicio)) {
			return false;
		}
		return true;
	}
}